This invention relates generally to storage systems associated with computer systems and more particularly to providing a method and apparatus for improving controller and cache resource utilization in a cached disk array storage system.
As it is known in the art, computer systems generally include a central processing unit, a memory subsystem and a storage subsystem. According to a networked or enterprise model of a computer system, the storage subsystem associated with or in addition to a local computer system, may include a large number of independent storage devices or disks housed in a single enclosure. This array of storage devices is typically connected to several computers (or hosts) via dedicated cabling or via a network. Such a model allows for the centralization of data which is to be shared among many users and also allows a single point of maintenance for the storage functions associated with the many computer systems.
One type of storage system known in the art is one which includes a number of disk storage devices configured as an array (sometimes referred to as RAID). Such a system may include several arrays of storage devices. In addition to the arrays of storage devices, typical storage systems include several types of controllers for controlling the various aspects of the data transfers associated with the storage system. One type of controller is a host controller and provides the interface between the host computers and the storage system. Another type of controller is a disk controller which is used to manage the transfer of data to and from an associated array of storage devices (e.g. disk drives). There may be one or more disk controllers for each array of storage devices in a storage system.
In addition to the controllers described above, advanced storage systems, such as the SYMMETRIX.RTM. storage systems manufactured by EMC Corporation, may include a very large memory which is coupled to each of the controllers in the system. The memory may be used as a staging area (or cache) for the data transfers between the storage devices and the host computers and may provide a communications path between the various controllers. The above described storage systems provide superior performance to non-cache storage systems.
One problem which may arise in the storage systems described above relates to servicing requests from multiple processes running on a single host. Although the stored data associated with a particular process may have a positional locality on the storage device, there is no guarantee that there is positional locality of data between the various processes. In addition, requests for data from each of the processes may be interleaved. This combination of interleaving and positional disparity of stored data may result in a large amount of seeking by the associated storage device. Since the seek portion of a data transfer requires mechanical movement of the read/write heads associated with a disk drive, it is typically the slowest part of a data access. Thus, the more seeking required fulfill data requests, the slower the storage system will be in response to those data requests.
It would be advantageous therefore to provide a storage system, capable of supporting asynchronous requests from multiple processes running on a single host without suffering from the seek time problem described above.